#ifndef __FAKENET_H
#define __FAKENET_H

#include "fakenet_interface.h"
#include "network.h"
#include "uarch/settings.h"
#include "uarch/types.h"
#include "uarch/stat.h"

class Fakenet : public Network{
public:
    Fakenet(int num_nodes);
    ~Fakenet();
    
    /** Values used in ID to bus interface mapping
     *      number of connections on the bus,
     *      number of nodes beneath each interface (for proper trickle down)
     *      offset of id range
     */

    manifold::kernel::CompId_t *fi_nodes_cid;
    Fakenet_interface **fi_pointer;

    void tick();
    void tock();
    
    Network_interface *get_interface (int id);
    manifold::kernel::CompId_t get_cid (int id);
};

#endif
